package com.example.springboot.common;

/**
 * 名称：拦截器配置
 * <p>
 * 功能：

 * 日期：2024/1/11 10:18
 */

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

@Configuration
public class InterceptorConfig extends WebMvcConfigurationSupport {

    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(jwtInterceptor())

                .addPathPatterns("/**")         // 拦截所有的请求路径
                .excludePathPatterns("/alipay/pay")
                .excludePathPatterns("/alipay/notify")
        // 这是第一种放行的方式
        // 第二种放行方式：
        //      创建AuthAccess自定义注解，
        //      在需要放行的Controller方法上加上AuthAccess注解，
        //      在AuthAccessInterceptor拦截器中判断方法上是否有AuthAccess注解，有则不拦截。
        //
        //  一般使用第二种，方便快捷
        //  但是第二种需要在JwtInterceptor.java中编写判断代码
//                .excludePathPatterns("/login","/register","/findPassword")      // 排除登录、注册、找回密码  路径
        ;
        super.addInterceptors(registry);
    }

    @Bean
    public JwtInterceptor jwtInterceptor() {
        return new JwtInterceptor();
    }

}
